package com.ruoyi.product.domain;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import com.ruoyi.common.core.domain.BaseEntity;
import com.ruoyi.monthlyInventory.domain.MonthlyInventory;
import com.ruoyi.procurement.domain.ProcurementModel;
import com.ruoyi.productProof.domain.ProductProof;
import com.ruoyi.purchaseReturn.domain.PurchaseReturnModel;
import com.ruoyi.sale.domain.SaleGoodsModel;
import com.ruoyi.sale.domain.SaleorderModel;
import com.ruoyi.saleReturn.domain.SaleReturnModel;
import com.ruoyi.warehousing.domain.Warehousing;
/*
import com.ruoyi.monthlyInventory.domain.MonthlyInventory;
import com.ruoyi.procurement.domain.ProcurementModel;
import com.ruoyi.productProof.domain.ProductProof;
import com.ruoyi.purchaseReturn.domain.PurchaseReturnModel;
import com.ruoyi.sale.domain.SaleGoodsModel;
import com.ruoyi.sale.domain.SaleorderModel;
import com.ruoyi.saleReturn.domain.SaleReturnModel;
import com.ruoyi.warehousing.domain.Warehousing;
*/

import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
import java.util.Map;

@JsonInclude(JsonInclude.Include.NON_NULL)
public class Product extends BaseEntity {

    private String isProduction;
    private String effectiveDate;
    private String productionDate;
    private String isAudit;
    private String productType;
    private Long companyId;
    private Long selectId;
    private Long saleGoodsId;
    private Long productId;
    private Long deptId;
    private Long factor;
    private Long scopeId;
    private String productName;
    private String productProofName;
    private List<Product> products;
    private String productProofAddress;
    private String productManualName;
    private Long row;

    private String isMature;


    /**
     * 产品说明书下载地址
     */
    private String productManualAddress;
    private String medicalNumber;
    private String managementCategory;
    private List<ProductRelation> productRelations;
    private String productCategory;
    /*  *
     * 产品描述
     */
    private String scopeInfo;
    /*  *
     * 产品主键*/
    private Date medicalEndTime;
    /*   *
     * 公司主键*/
    private String medicalPerson;
    private String medicalPhone;
    private String medicalAddress;
    /**
     * 型号唯一码
     */
    private String modelCode;
    /* *
     * 产品注册证*/
    private String companyName;
    /*   *
     * 产品名称*/
    /*产品注册证下载地址*/
    private String agentName;
    /**
     * 加减年份
     */

    private String yearType;
    private String yearRule;
    /**
     * 加减月份
     */

    private String monthType;
    /* *
     * 产品说明书*/
    private String monthRule;
    /*  *
     * 加减日期
     */
    private String dayType;
    /* *
     * 医疗器械注册证号*/
    private String dayRule;
    /* *
     * 管理类别*/
    private List<ProductModel> productModel;
    /* *
     * 产品类别*/
    /* *
     * 产品规格信息单条
     */
    private ProductModel productModels;
    /**
     * 产品注册证信息
     */

    private List<ProductProof> productProof;
    /* *
     * 注册证有效期至*/
    private List<AICode> aiCodes;
    /* *
     * 注册人名称*/
    private String modelNo;
    /*   *
     * 注册人联系方式*/
    private int slowRatio;
    /*  *
     * 注册人地址*/
    private List<Warehousing> warehousingList;
    private List<MonthlyInventory> monthlyInventoryList;
    private List<Map<String, Object>> ides;
    /* *
     * 代理人名称*/
    private List<ProcurementModel> warehousingModel;
    private List<SaleGoodsModel> saleGoodsModel;
    /**
     * 销售订单从表
     */

    private List<SaleorderModel> saleorderModels;
    private List<PurchaseReturnModel> purchaseReturnModels;

    /**
     * 销售退货从表
     */
    public String getIsMature() {
        return isMature;
    }

    public void setIsMature(String isMature) {
        this.isMature = isMature;
    }

    private List<SaleReturnModel> saleReturnModels;
    private Long num;
    // @JsonSerialize(using = BigDecimalSerializer.class)
    @JsonSerialize(using = ToStringSerializer.class)
    private BigDecimal taxTotal;
    /*
     *
     * 产品规格信息子集*/
    //    @JsonSerialize(using = BigDecimalSerializer.class)
    @JsonSerialize(using = ToStringSerializer.class)
    private BigDecimal taxPrice;
    /* *
     * 在库数量
     */
    private int warehousingNum;
    private int warningNum;
    /*  *
     * AI码*/
    private String unit;
    /* *
     * 型号主键*/
    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
    private Date startTime;
    /*  *
     * 注册人联系方式*/
    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
    private Date endTime;
    /* *
     * 产品库存*/
    private Long purchaseModelId;
    /* * 库存统计*/
    private Long amount;


    public List<ProductRelation> getProductRelations() {
        return productRelations;
    }

    public void setProductRelations(List<ProductRelation> productRelations) {
        this.productRelations = productRelations;
    }

    public String getIsProduction() {
        return isProduction;
    }

    public void setIsProduction(String isProduction) {
        this.isProduction = isProduction;
    }

    /*  *
     * 查询*/

    public String getEffectiveDate() {
        return effectiveDate;
    }

    /*  *
     * 产品入库从表*/

    public void setEffectiveDate(String effectiveDate) {
        this.effectiveDate = effectiveDate;
    }
    /* *
     * 销货单从表*/

    public String getProductionDate() {
        return productionDate;
    }

    public void setProductionDate(String productionDate) {
        this.productionDate = productionDate;
    }
    /* *
     * 采购退货从表*/

    public String getIsAudit() {
        return isAudit;
    }

    public void setIsAudit(String isAudit) {
        this.isAudit = isAudit;
    }
    /* *
     * 数量*/

    public String getProductType() {
        return productType;
    }
    /*   *
     * 含税金额*/

    public void setProductType(String productType) {
        this.productType = productType;
    }
    /*  *
     * 含税单价*/

    public Long getCompanyId() {
        return companyId;
    }

    public void setCompanyId(Long companyId) {
        this.companyId = companyId;
    }
    /* *
     * 数量*/

    public Long getSelectId() {
        return selectId;
    }

    public void setSelectId(Long selectId) {
        this.selectId = selectId;
    }

    public Long getSaleGoodsId() {
        return saleGoodsId;
    }

    public void setSaleGoodsId(Long saleGoodsId) {
        this.saleGoodsId = saleGoodsId;
    }

    public List<Product> getProducts() {
        return products;
    }

    public void setProducts(List<Product> products) {
        this.products = products;
    }

    public String getUnit() {
        return unit;
    }

    public void setUnit(String unit) {
        this.unit = unit;
    }

    public Long getFactor() {
        return factor;
    }

    public void setFactor(Long factor) {
        this.factor = factor;
    }

    public Date getStartTime() {
        return startTime;
    }

    public void setStartTime(Date startTime) {
        this.startTime = startTime;
    }

    public Date getEndTime() {
        return endTime;
    }

    public void setEndTime(Date endTime) {
        this.endTime = endTime;
    }

    public Long getAmount() {
        return amount;
    }

    public void setAmount(Long amount) {
        this.amount = amount;
    }

    public Long getPurchaseModelId() {
        return purchaseModelId;
    }

    public void setPurchaseModelId(Long purchaseModelId) {
        this.purchaseModelId = purchaseModelId;
    }

    public String getYearType() {
        return yearType;
    }

    public void setYearType(String yearType) {
        this.yearType = yearType;
    }

    public String getYearRule() {
        return yearRule;
    }

    public void setYearRule(String yearRule) {
        this.yearRule = yearRule;
    }

    public String getMonthType() {
        return monthType;
    }

    public void setMonthType(String monthType) {
        this.monthType = monthType;
    }

    public String getMonthRule() {
        return monthRule;
    }

    public void setMonthRule(String monthRule) {
        this.monthRule = monthRule;
    }

    public String getDayType() {
        return dayType;
    }

    public void setDayType(String dayType) {
        this.dayType = dayType;
    }

    public String getDayRule() {
        return dayRule;
    }

    public void setDayRule(String dayRule) {
        this.dayRule = dayRule;
    }

    public String getCompanyName() {
        return companyName;
    }

    public void setCompanyName(String companyName) {
        this.companyName = companyName;
    }

    public Long getScopeId() {
        return scopeId;
    }

    public void setScopeId(Long scopeId) {
        this.scopeId = scopeId;
    }

    public BigDecimal getTaxPrice() {
        return taxPrice;
    }

    public void setTaxPrice(BigDecimal taxPrice) {
        this.taxPrice = taxPrice;
    }

    public BigDecimal getTaxTotal() {
        return taxTotal;
    }

    public void setTaxTotal(BigDecimal taxTotal) {
        this.taxTotal = taxTotal;
    }

    public String getModelNo() {
        return modelNo;
    }

    public void setModelNo(String modelNo) {
        this.modelNo = modelNo;
    }

    public Long getNum() {
        return num;
    }

    public void setNum(Long num) {
        this.num = num;
    }

    public List<PurchaseReturnModel> getPurchaseReturnModels() {
        return purchaseReturnModels;
    }

    public void setPurchaseReturnModels(List<PurchaseReturnModel> purchaseReturnModels) {
        this.purchaseReturnModels = purchaseReturnModels;
    }

    public List<SaleReturnModel> getSaleReturnModels() {
        return saleReturnModels;
    }

    public void setSaleReturnModels(List<SaleReturnModel> saleReturnModels) {
        this.saleReturnModels = saleReturnModels;
    }

    public List<SaleorderModel> getSaleorderModels() {
        return saleorderModels;
    }

    public void setSaleorderModels(List<SaleorderModel> saleorderModels) {
        this.saleorderModels = saleorderModels;
    }

    public List<SaleGoodsModel> getSaleGoodsModel() {
        return saleGoodsModel;
    }

    public void setSaleGoodsModel(List<SaleGoodsModel> saleGoodsModel) {
        this.saleGoodsModel = saleGoodsModel;
    }

    public List<ProcurementModel> getWarehousingModel() {
        return warehousingModel;
    }

    public void setWarehousingModel(List<ProcurementModel> warehousingModel) {
        this.warehousingModel = warehousingModel;
    }

    public int getSlowRatio() {
        return slowRatio;
    }

    public void setSlowRatio(int slowRatio) {
        this.slowRatio = slowRatio;
    }

    public List<Map<String, Object>> getIdes() {
        return ides;
    }

    public void setIdes(List<Map<String, Object>> ides) {
        this.ides = ides;
    }

    public Long getProductId() {
        return productId;
    }

    public void setProductId(Long productId) {
        this.productId = productId;
    }

    public Long getDeptId() {
        return deptId;
    }

    public void setDeptId(Long deptId) {
        this.deptId = deptId;
    }

    public String getProductName() {
        return productName;
    }

    public void setProductName(String productName) {
        this.productName = productName;
    }


    public String getProductProofName() {
        return productProofName;
    }

    public void setProductProofName(String productProofName) {
        this.productProofName = productProofName;
    }

    public String getProductProofAddress() {
        return productProofAddress;
    }

    public void setProductProofAddress(String productProofAddress) {
        this.productProofAddress = productProofAddress;
    }

    public String getProductManualName() {
        return productManualName;
    }

    public void setProductManualName(String productManualName) {
        this.productManualName = productManualName;
    }

    public String getProductManualAddress() {
        return productManualAddress;
    }

    public void setProductManualAddress(String productManualAddress) {
        this.productManualAddress = productManualAddress;
    }

    public String getMedicalNumber() {
        return medicalNumber;
    }

    public void setMedicalNumber(String medicalNumber) {
        this.medicalNumber = medicalNumber;
    }

    public String getManagementCategory() {
        return managementCategory;
    }

    public void setManagementCategory(String managementCategory) {
        this.managementCategory = managementCategory;
    }

    public String getProductCategory() {
        return productCategory;
    }

    public void setProductCategory(String productCategory) {
        this.productCategory = productCategory;
    }

    public String getScopeInfo() {
        return scopeInfo;
    }

    public void setScopeInfo(String scopeInfo) {
        this.scopeInfo = scopeInfo;
    }

    public Date getMedicalEndTime() {
        return medicalEndTime;
    }

    public void setMedicalEndTime(Date medicalEndTime) {
        this.medicalEndTime = medicalEndTime;
    }

    public String getMedicalPerson() {
        return medicalPerson;
    }

    public void setMedicalPerson(String medicalPerson) {
        this.medicalPerson = medicalPerson;
    }

    public String getMedicalPhone() {
        return medicalPhone;
    }

    public void setMedicalPhone(String medicalPhone) {
        this.medicalPhone = medicalPhone;
    }

    public String getMedicalAddress() {
        return medicalAddress;
    }

    public void setMedicalAddress(String medicalAddress) {
        this.medicalAddress = medicalAddress;
    }

    public String getAgentName() {
        return agentName;
    }

    public void setAgentName(String agentName) {
        this.agentName = agentName;
    }

    public List<ProductModel> getProductModel() {
        return productModel;
    }

    public void setProductModel(List<ProductModel> productModel) {
        this.productModel = productModel;
    }

    public ProductModel getProductModels() {
        return productModels;
    }

    public void setProductModels(ProductModel productModels) {
        this.productModels = productModels;
    }

    public List<ProductProof> getProductProof() {
        return productProof;
    }

    public void setProductProof(List<ProductProof> productProof) {
        this.productProof = productProof;
    }

    public List<AICode> getAiCodes() {
        return aiCodes;
    }

    public void setAiCodes(List<AICode> aiCodes) {
        this.aiCodes = aiCodes;
    }

    public String getModelCode() {
        return modelCode;
    }

    public void setModelCode(String modelCode) {
        this.modelCode = modelCode;
    }

    public List<Warehousing> getWarehousingList() {
        return warehousingList;
    }

    public void setWarehousingList(List<Warehousing> warehousingList) {
        this.warehousingList = warehousingList;
    }

    public List<MonthlyInventory> getMonthlyInventoryList() {
        return monthlyInventoryList;
    }

    public void setMonthlyInventoryList(List<MonthlyInventory> monthlyInventoryList) {
        this.monthlyInventoryList = monthlyInventoryList;
    }

    public int getWarehousingNum() {
        return warehousingNum;
    }

    public void setWarehousingNum(int warehousingNum) {
        this.warehousingNum = warehousingNum;
    }

    public int getWarningNum() {
        return warningNum;
    }

    public void setWarningNum(int warningNum) {
        this.warningNum = warningNum;
    }

    public Long getRow() {
        return row;
    }

    public void setRow(Long row) {
        this.row = row;
    }
}